package com.hello.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 支付记录对象 rental_payments
 * 
 * @author hello
 * @date 2025-07-20
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RentalPayments extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 支付ID */
    private Long paymentId;

    /** 支付单号 */
    @Excel(name = "支付单号")
    private String paymentNo;

    /** 订单ID */
    @Excel(name = "订单ID")
    private Long orderId;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 支付类型：1-租金支付，2-押金支付，3-押金退还，4-租金退还 */
    @Excel(name = "支付类型：1-租金支付，2-押金支付，3-押金退还，4-租金退还")
    private Integer paymentType;

    /** 支付方式：1-支付宝，2-微信，3-银行卡，4-余额 */
    @Excel(name = "支付方式：1-支付宝，2-微信，3-银行卡，4-余额")
    private Integer paymentMethod;

    /** 支付金额 */
    @Excel(name = "支付金额")
    private BigDecimal amount;

    /** 支付状态：1-待支付，2-支付成功，3-支付失败，4-已退款 */
    @Excel(name = "支付状态：1-待支付，2-支付成功，3-支付失败，4-已退款")
    private Integer status;

    /** 第三方支付单号 */
    @Excel(name = "第三方支付单号")
    private String thirdPartyNo;

    /** 支付回调信息 */
    @Excel(name = "支付回调信息")
    private String callbackInfo;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paidTime;

    /** 退款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "退款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date refundTime;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedTime;

    public void setPaymentId(Long paymentId) 
    {
        this.paymentId = paymentId;
    }

    public Long getPaymentId() 
    {
        return paymentId;
    }
    public void setPaymentNo(String paymentNo) 
    {
        this.paymentNo = paymentNo;
    }

    public String getPaymentNo() 
    {
        return paymentNo;
    }
    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setPaymentType(Integer paymentType) 
    {
        this.paymentType = paymentType;
    }

    public Integer getPaymentType() 
    {
        return paymentType;
    }
    public void setPaymentMethod(Integer paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public Integer getPaymentMethod() 
    {
        return paymentMethod;
    }
    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setThirdPartyNo(String thirdPartyNo) 
    {
        this.thirdPartyNo = thirdPartyNo;
    }

    public String getThirdPartyNo() 
    {
        return thirdPartyNo;
    }
    public void setCallbackInfo(String callbackInfo) 
    {
        this.callbackInfo = callbackInfo;
    }

    public String getCallbackInfo() 
    {
        return callbackInfo;
    }
    public void setPaidTime(Date paidTime) 
    {
        this.paidTime = paidTime;
    }

    public Date getPaidTime() 
    {
        return paidTime;
    }
    public void setRefundTime(Date refundTime) 
    {
        this.refundTime = refundTime;
    }

    public Date getRefundTime() 
    {
        return refundTime;
    }
    public void setCreatedTime(Date createdTime) 
    {
        this.createdTime = createdTime;
    }

    public Date getCreatedTime() 
    {
        return createdTime;
    }
    public void setUpdatedTime(Date updatedTime) 
    {
        this.updatedTime = updatedTime;
    }

    public Date getUpdatedTime() 
    {
        return updatedTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("paymentId", getPaymentId())
            .append("paymentNo", getPaymentNo())
            .append("orderId", getOrderId())
            .append("userId", getUserId())
            .append("paymentType", getPaymentType())
            .append("paymentMethod", getPaymentMethod())
            .append("amount", getAmount())
            .append("status", getStatus())
            .append("thirdPartyNo", getThirdPartyNo())
            .append("callbackInfo", getCallbackInfo())
            .append("paidTime", getPaidTime())
            .append("refundTime", getRefundTime())
            .append("remark", getRemark())
            .append("createdTime", getCreatedTime())
            .append("updatedTime", getUpdatedTime())
            .toString();
    }
}
